package com.itlong.cloud.commons.service;

import com.itlong.cloud.POJO.PO.DeviceBusinessChangeLogPO;
import com.itlong.cloud.POJO.PO.DeviceBusinessEntranceChangeLogPO;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import java.io.IOException;
import java.util.List;

/**
 * <desc>
 *      云门禁响应硬件结果业务处理服务层接口
 * </desc>
 *
 * @createDate 2019/02/26
 */
public interface IPushCloudEntranceChangeLogService {

    /**
     * <desc>
     *      任务调度执行同步业务指令至响应硬件结果表
     * </desc>
     *
     * @author wangzhi
     * @createDate 2019/02/26
     */
    void timeTaskPushCloudEntrance() throws Exception;

    /**
     * <desc>
     *      全量更新
     * </desc>
     *
     * @param projectId 项目id
     * @author wangzhi
     * @createDate 2019/02/27
     */
    void updateFull(String projectId,String params);

    /**
     * <desc>
     *      云门禁单个设备物理地址变更
     * </desc>
     *
     * @param business 业务数据
     * @author wangzhi
     * @createDate 2019/02/27
     */
    void setPushDeviceOne(List<DeviceBusinessEntranceChangeLogPO> business);

    /**
     * <desc>
     *      处理推送硬件响应项目信息
     * </desc>
     *
     * @param business 业务数据
     * @author wangzhi
     * @createDate 2019/02/27
     */
    void setPushProject(List<DeviceBusinessEntranceChangeLogPO> business);

    /**
     * <desc>
     *      处理推送设备响应固定密码信息
     * </desc>
     *
     * @param business 业务数据
     * @author wangzhi
     * @createDate 2019/02/27
     */
    void setPushFixedPassword(List<DeviceBusinessEntranceChangeLogPO> business);

    /**
     * <desc>
     *      处理推送硬件响应设备信息
     * </desc>
     *
     * @param business 业务数据
     * @author wangzhi
     * @createDate 2019/02/27
     */
    void setPushDevice(List<DeviceBusinessEntranceChangeLogPO> business);

    /**
     * <desc>
     *      处理推送设备项目信息变更
     * </desc>
     *
     * @param business 业务数据
     * @author wangzhi
     * @createDate 2019/04/29
     */
    void setPushUserProject(List<DeviceBusinessEntranceChangeLogPO> business,Integer type);

    /**
     * <desc>
     *      处理门禁黑名单数据
     * </desc>
     *
     * @param business 业务数据
     * @author Jiaqi.X
     * @createDate 2019/10/15
     */
    void setBlackList(List<DeviceBusinessEntranceChangeLogPO> business) throws IOException;

    /**
     * <desc>
     *      处理推送临时权限数据
     * </desc>
     *
     * @param business
     * @throws Exception
     * @author Jiaqi.X
     */
    void setPushTempAuth(List<DeviceBusinessEntranceChangeLogPO> business) throws Exception;

    /**
     * <desc>
     *      处理推送设备响应多媒体信息
     * </desc>
     *
     * @author Qiang.S
     * @createDate 2019/07/22
     */
    void setPushMedia(List<DeviceBusinessEntranceChangeLogPO> business) throws Exception;

    /**
     * <desc>
     *     处理推送单个设备人脸信息配置变更
     * </desc>
     *
     * @author Qiang.S
     * @createDate 2019/07/22
     */
    void setPushFaceInfo(List<DeviceBusinessEntranceChangeLogPO> business) throws Exception;
}
